Add option to disable virtual files syncing on Windows.
authorCamila Ayres <hello@camilasan.com>
Wed, 26 Feb 2025 15:55:26 +0000 (16:55 +0100)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Thu, 13 Mar 2025 11:15:46 +0000 (12:15 +0100)
Signed-off-by: Camila Ayres <hello@camilasan.com>
NEXTCLOUD.cmake
config.h.in
src/gui/accountsettings.cpp
src/gui/folderman.cpp
src/gui/folderwizard.cpp
src/gui/wizard/owncloudadvancedsetuppage.cpp
src/libsync/theme.cpp
src/libsync/theme.h

index 9b0129263b631f4d3457614a74ab3c5a03962c9f..e589a779931c15ab05388307fed9e6ce957862a8 100644 (file)
@@ -52,6 +52,7 @@ option( BUILD_UPDATER "Build updater" ON )
 option( WITH_PROVIDERS "Build with providers list" ON )
 
 option( ENFORCE_VIRTUAL_FILES_SYNC_FOLDER "Enforce use of virtual files sync folder when available" OFF )
+option( DISABLE_VIRTUAL_FILES_SYNC_FOLDER "Disable use of virtual files sync folder even when available" OFF )
 
 option(ENFORCE_SINGLE_ACCOUNT "Enforce use of a single account in desktop client" OFF)
 
index bcf061028fb0d47b01cd245ae5a09bb6108a00c7..0e3f0eae919b6830da8274c6eb4e05eed0942890 100644 (file)
@@ -36,6 +36,7 @@
 #define APPLICATION_DOTVIRTUALFILE_SUFFIX "." APPLICATION_VIRTUALFILE_SUFFIX
 #define APPLICATION_URI_HANDLER_SCHEME "@APPLICATION_URI_HANDLER_SCHEME@"
 #cmakedefine01 ENFORCE_VIRTUAL_FILES_SYNC_FOLDER
+#cmakedefine01 DISABLE_VIRTUAL_FILES_SYNC_FOLDER
 #cmakedefine DO_NOT_USE_PROXY "@DO_NOT_USE_PROXY@"
 #cmakedefine ENFORCE_SINGLE_ACCOUNT "@ENFORCE_SINGLE_ACCOUNT@"
 #cmakedefine01 APPLICATION_DISPLAY_LEGACY_IMPORT_DIALOG
index 5d352bdbab8287d5a383376efa2826ead8036986..65b8b7badc0d4566a4a7c3296ce6fe91ff507b7a 100644 (file)
@@ -726,8 +726,8 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
     }
 
     if (const auto mode = bestAvailableVfsMode();
-        Theme::instance()->showVirtualFilesOption()
-        && !folder->virtualFilesEnabled() && Vfs::checkAvailability(folder->path(), mode)) {
+        !Theme::instance()->disableVirtualFilesSyncFolder() &&
+        Theme::instance()->showVirtualFilesOption() && !folder->virtualFilesEnabled() && Vfs::checkAvailability(folder->path(), mode)) {
         if (mode == Vfs::WindowsCfApi || ConfigFile().showExperimentalOptions()) {
             ac = menu->addAction(tr("Enable virtual file support %1 …").arg(mode == Vfs::WindowsCfApi ? QString() : tr("(experimental)")));
             // TODO: remove when UX decision is made
index 92db88f1a69177702b90738ad7b71ec8dc39c481..6be6516e4c49c88e63fe3edf47424d100f00e72a 100644 (file)
@@ -991,7 +991,8 @@ bool FolderMan::pushNotificationsFilesReady(Account *account)
 bool FolderMan::isSwitchToVfsNeeded(const FolderDefinition &folderDefinition) const
 {
     auto result = false;
-    if (ENFORCE_VIRTUAL_FILES_SYNC_FOLDER &&
+    if (!DISABLE_VIRTUAL_FILES_SYNC_FOLDER &&
+            ENFORCE_VIRTUAL_FILES_SYNC_FOLDER &&
             folderDefinition.virtualFilesMode != bestAvailableVfsMode() &&
             folderDefinition.virtualFilesMode == Vfs::Off &&
             OCC::Theme::instance()->showVirtualFilesOption()) {
index a3023bbc3d1b9125b5121de4949f72a2fc4f4353..9f31cf4b78b408e7d655d160830fc1793585c094 100644 (file)
@@ -572,7 +572,7 @@ FolderWizardSelectiveSync::FolderWizardSelectiveSync(const AccountPtr &account)
     _selectiveSync = new SelectiveSyncWidget(account, this);
     layout->addWidget(_selectiveSync);
 
-    if (Theme::instance()->showVirtualFilesOption() && bestAvailableVfsMode() != Vfs::Off) {
+    if (!Theme::instance()->disableVirtualFilesSyncFolder() && Theme::instance()->showVirtualFilesOption() && bestAvailableVfsMode() != Vfs::Off) {
         _virtualFilesCheckBox = new QCheckBox(tr("Use virtual files instead of downloading content immediately %1").arg(bestAvailableVfsMode() == Vfs::WindowsCfApi ? QString() : tr("(experimental)")));
         connect(_virtualFilesCheckBox, &QCheckBox::clicked, this, &FolderWizardSelectiveSync::virtualFilesCheckboxClicked);
         connect(_virtualFilesCheckBox, &QCheckBox::checkStateChanged, this, [this](int state) {
index d4217620dfd02a2fd8d41133062ef04a127c82c6..c3da20ec08cfa8cd17c05ebc16159b5f3ea49d47 100644 (file)
@@ -158,7 +158,7 @@ void OwncloudAdvancedSetupPage::initializePage()
 {
     WizardCommon::initErrorLabel(_ui.errorLabel);
 
-    if (!Theme::instance()->showVirtualFilesOption()
+    if (Theme::instance()->disableVirtualFilesSyncFolder() || !Theme::instance()->showVirtualFilesOption()
 #ifndef BUILD_FILE_PROVIDER_MODULE
         || bestAvailableVfsMode() == Vfs::Off
 #endif
index 59f1d5ef7b7393bb6d14bc104856ca545d5f772b..9e90a0002e36006c180f1424653f98301a92e409 100644 (file)
@@ -960,6 +960,11 @@ bool Theme::enforceVirtualFilesSyncFolder() const
     return ENFORCE_VIRTUAL_FILES_SYNC_FOLDER && vfsMode != OCC::Vfs::Off;
 }
 
+bool Theme::disableVirtualFilesSyncFolder() const
+{
+    return DISABLE_VIRTUAL_FILES_SYNC_FOLDER;
+}
+
 QColor Theme::defaultColor()
 {
     return QColor{NEXTCLOUD_BACKGROUND_COLOR};
index 092fc112b4c65c70f59304ee377358621a820728..6c05ffde91c41f7d1e738366d36908e32427fc02 100644 (file)
@@ -596,6 +596,7 @@ public:
     [[nodiscard]] bool showVirtualFilesOption() const;
 
     [[nodiscard]] bool enforceVirtualFilesSyncFolder() const;
+    [[nodiscard]] bool disableVirtualFilesSyncFolder() const;
 
     static QColor defaultColor();